#include "dirdata.h"

DirData::DirData()
{

}

DirData::~DirData()
{

}

void DirData::deleteAll()
{
    int rows = _model->rowCount();
    if (rows > 0) {
        _model->removeRows(0, rows);  // 删除所有行但保留表头
    }
}
QString formatFileSize(qint64 bytes) {
    const QString units[] = {"B", "KB", "MB", "GB", "TB"};
    int unitIndex = 0;
    double size = bytes;

    // 循环除以1024，直到数值小于1024或单位用完
    while (size >= 1024 && unitIndex < 4) {
        size /= 1024;
        unitIndex++;
    }

    // 保留2位小数并添加单位
    return QString("%1 %2").arg(size, 0, 'f', 2).arg(units[unitIndex]);
}
void DirData::addRowDatas(QString name,int size, QString flag)
{
    QString newsize = formatFileSize(size);
    QList<QStandardItem*> rowItems;
    rowItems << new QStandardItem(name)
             << new QStandardItem(newsize)
             << new QStandardItem(flag);

    // 在末尾添加一行
    _model->appendRow(rowItems);
}

void DirData::setModel()
{
    // 创建模型（指定 0 行，但保留列数）
    _model = new QStandardItemModel(0, 3, _leader); // 0 行，3 列
    // 设置横向表头
    _model->setHorizontalHeaderLabels({"文件名称", "文件大小", "是否是目录文件"});
}

void DirData::setWidget(Widget *ptr)
{
    _leader = ptr;
}
